event: remove ABT_event_XXX() functions #144
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR removes the ABT_event interface, which seems designed to allows users to make execution streams "do something" periodically but at present supports only predefined functionalities. There are five reasons why I try to remove it:
(1) these features are not actively used (as far as I know),
(2) these features are not tested,
(3) these features are not documented well,
(4) these features make the code complicated, and
(5) they should be implemented on top of Argobots based on the application's needs.
Currently, the following predefined features are implemented:
ABT_CONFIG_HANDLE_POWER_EVENT
)When this feature is enabled, Argobots is connected with a homemade power management server.
argobots/src/event.c
Line 301 in c8c058c
An execution stream periodically polls messages from this server in
ABTI_event_check_power()
and changes the number of execution streams dynamically.argobots/src/event.c
Line 670 in c8c058c
This feature provides an interface to (1) set the server address (
ABT_POWER_EVENT_HOSTNAME
andABT_POWER_EVENT_PORT
) and (2) add and delete user-defined callbacks on ES creation and destruction (i.e.,ABT_event_add_callback()
,ABT_event_del_callback()
).ABT_CONFIG_PUBLISH_INFO
)When this feature is enabled, Argobots starts profiling; specifically it measures power consumption via RAPL, the numbers of completed ULTs and tasks per ES). One execution stream periodically outputs profiled data in
ABTI_event_publish_info()
.argobots/src/event.c
Line 975 in c8c058c
The profiling data is output by either fprintf() or BEACON (https://gitlab.encs.vancouver.wsu.edu/xuechen.zhang/storageqos-siren/tree/2208026ea18faecb43ba04442516f1c103982269/src/enclave-comm).
This feature provides an interface to (1) start and stop profiling (
ABT_event_prof_start()
andABT_event_prof_stop()
), (2) explicitly publish data (ABT_event_prof_publish()
), and (3) configure parameters (e.g., an interval viaABT_PUBLISH_INTERVAL
).Note that this PR does not deny the usefulness of these features. I rather think they are good examples to show how to interact with external components, while priority of making such examples is not high. If requested, I will raise the priority so please let us know.
This removes a user interface that can control event, but the concept of "event" still remains in Argobots. We cannot simply remove it since now scheduler termination relies on "event" processing
Any suggestions are welcome.